#ifndef HB_FC_H
#define HB_FC_H

#include <math.h>
#include <float.h>
#include <string.h>
#include "layer_base.h"


class fc_layer_t: public layer_t
{
public:
	std::vector<float> input;
	tensor_t<float> weights;
	std::vector<gradient_t> gradients;

	fc_layer_t( tdsize in_size, int out_size );

	int id( int x, int y, int z );

	float activator_function( float x );

	float activator_derivative( float x );

	void activate( tensor_t<float>& in ) override;

	void fix_weights() override;

	void calc_grads( tensor_t<float>& grad_next_layer ) override;

};

#endif ///HB_FC_H